#ifndef STDAFX_H
#define	STDAFX_H

#include <Windows.h>

#include <iostream>
#include <list>

#include <boost/smart_ptr/shared_ptr.hpp>

#include "Peer.h"
#include "Publisher.h"

namespace Simulador {
    
    using std::cout;
    using std::cin;
    using std::endl;
    const unsigned int NUMRODADAS(10);
    const unsigned int QTDEVENTOS(25);
    enum tipo {CRIA_PEER, DELETA_SEED, TENTA_UPLOAD_PEER, FIM_UPLOAD_PEER,
                        TENTA_UPLOAD_PUBLISHER, FIM_UPLOAD_PUBLISHER};
}

//evento definido pelo tempo ate sua ocorrencia + o seu tipo
struct EVENTO {
    
    unsigned int tempoOcorrencia;
    Simulador::tipo tipoEvento;
    
    //checar se isso funciona ou se precisa redefinir as outras variacoes tbm ( >=, >, <, ==, etc )
    int operator< (const EVENTO &ev1) {
        if (this->tempoOcorrencia < ev1.tempoOcorrencia) 
            return 1;
        return 0;
    }
};

typedef boost::shared_ptr<Peer> P_Peer;
typedef boost::shared_ptr<Publisher> P_Publisher;


#endif	/* STDAFX_H */

